home *** CD-ROM | disk | FTP | other *** search
/ Nothing but Tetris / Nothing but Tetris.iso / amiga / super_caztri_ii / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1994-10-27  |  12KB  |  501 lines

  1. Set Buffer 10
  2. '        *********            Startup             *******
  3. Randomize Timer
  4. Key Speed 5,5
  5. K=22
  6. Led Off 
  7. Dim PF(15,22),X(K,3),Y(K,3),CO(K),N(K)
  8. Global N$,FT,CL,CO()
  9. For T=0 To 15 : PF(T,22)=1 : Next 
  10. For T=0 To 22 : PF(0,T)=1 : PF(15,T)=1 : Next 
  11. For G=2 To K : Read CO(G)
  12.    For T=1 To 3 : Read X(G,T),Y(G,T) : Next : 
  13.    Read N(G)
  14. Next 
  15. CO(0)=9
  16. Screen Open 0,320,256,32,0
  17. Flash Off 
  18. Curs Off 
  19. Hide On 
  20. Do 
  21.    Load "CazTri:mentre",3
  22.    Load Iff "CazTri:pictochange"
  23.    Music 1
  24.    Clear Key 
  25.    KW
  26.    Load Iff "CazTri:screentochange"
  27.    Clear Key 
  28.    Key Speed 10,10 : Paper 0 : Pen 2
  29.    Locate 12,22 : CINPUT["'abcdefghijklmnopqrstuvwxyz",5]
  30.    Key Speed 5,3
  31.    '     ******************  Livello 1     ********************** 
  32.    Erase 3
  33.    PUNTI=0 : CULO=0 : GU=1
  34.    Restore 101
  35.    Repeat 
  36.       Read L,MAZ,LINE,PAZ$
  37.       If PAZ$=N$
  38.          GU=L
  39.       End If 
  40.    Until PAZ$="."
  41.    Load "base1M",3
  42.    Music 1
  43.    Repeat 
  44.       Mvolume 63
  45.       Restore GU+100
  46.       Gosub NANO
  47.       Read L,MAZ,LINE,PAZ$
  48.       If MAZ=0
  49.          Gosub FINE : CULO=2
  50.       Else 
  51.          Load Iff "CazTri:picture"
  52.          Ink 7 : Bar 25,50 To 134,70 : Ink 29 : Box 25,50 To 134,70
  53.          Locate 4,7 : Pen 1 : Paper 7 : Print " GET READY! " : Wait 150
  54.          If L=2
  55.             For T=10 To 21 : For G=1 To 2 : PF(G,T)=Rnd(6)+2 : PF(15-G,T)=Rnd(6)+2 : Next : Next 
  56.          End If 
  57.          Gosub L*1
  58.          Gosub RESTO
  59.          Paper 10 : Pen 1 : Locate 12,24 : Print L : Paper 12 : Locate 11,26 : Print LINE;" "
  60.          Gosub MAIN
  61.       End If 
  62.    Until CULO>0
  63.    FINAL:
  64.    If CULO=1
  65.       Ink 7 : Bar 25,50 To 134,70 : Ink 29 : Box 25,50 To 134,70
  66.       Locate 4,7 : Pen 1 : Paper 7 : Mvolume 10
  67.       Volume %1111,63
  68.       Print " GAME OVER! " : Sam Play 8,1,12000 : Wait 250
  69.    End If 
  70.    Erase 3
  71.    Load "Dream",3
  72.    Mvolume 63
  73.    Music 1
  74.    Paper 0 : Cls 
  75.    Load Iff "totalefinepic"
  76.    Clear Key 
  77.    Locate 16,18 : Paper 0 : Pen 5 : Print L
  78.    Locate 13,20 : Pen 6 : Print PUNTI
  79.    KW
  80.    Erase 3
  81.    Clear Key 
  82. Loop 
  83. End 
  84. '   *****************  MAIN PROGRAM !!!!!!! *********************
  85. MAIN:
  86. Randomize Timer
  87. DL=Rnd(6)+2 : Ink 9
  88. Repeat 
  89.    DF:
  90.    CL=DL
  91.    DL=Rnd(6)+2
  92.    If CL=9 Then Goto DF
  93.    X=9 : Y=1 : CONTO=0 : A=0 : Ink 9
  94.    Bar 180,120 To 219,154
  95.    LL=CL : CL=DL : FOTTO[24,17] : For T=1 To 3 : FOTTO[24+X(DL,T),17+Y(DL,T)] : Next : Swap LL,CL
  96.    Paper 2 : Pen 1 : Locate 32,24 : Print PUNTI
  97.    If L=8 and LINE=1 Then MAZ=2
  98.    Clear Key 
  99.    Repeat 
  100.       A$=Inkey$
  101.       If A$="a" Then Music Off 
  102.       If A$="m" Then Music 1
  103.       If(A$=" ") or(A$=".") or((Joy(1) and 2)=2) Then CONTO=CONTO+MAZ/2
  104.       If((A$=Chr$(29)) or(A$="z") or(A$="q") or((Joy(1) and 4)=4)) and(PF(X-3,Y)=0) and(PF(X-3+X(CL,1),Y+Y(CL,1))=0) and(PF(X-3+X(CL,2),Y+Y(CL,2))=0) and(PF(X-3+X(CL,3),Y+Y(CL,3))=0)
  105.          Paper 9 : Locate X,Y : Print " "
  106.          Gosub D
  107.          Dec X
  108.          Gosub S
  109.          Wait 2
  110.       End If 
  111.       If((A$=Chr$(28)) or(A$="x") or(A$="w") or((Joy(1) and 8)=8)) and(PF(X-1,Y)=0) and(PF(X-1+X(CL,1),Y+Y(CL,1))=0) and(PF(X-1+X(CL,2),Y+Y(CL,2))=0) and(PF(X-1+X(CL,3),Y+Y(CL,3))=0)
  112.          Gosub D
  113.          Inc X
  114.          Gosub S
  115.          Wait 2
  116.       End If 
  117.       If(A$=Chr$(30)) or(A$=Chr$(31)) or(A$=Chr$(13) or((Joy(1) and 16)=16))
  118.          Gosub O
  119.          If H=0
  120.             Gosub D : CL=N(CL)
  121.          End If 
  122.          If H<>0
  123.             '----------------     pezzi gialli e rossi-----------  
  124.             If N(CL)=5 or N(CL)=2 or N(CL)=21 or N(CL)=22 or N(CL)=6
  125.                X1=X : Inc X
  126.                Gosub O
  127.                If H=0
  128.                   Dec X
  129.                   Gosub D : Inc X : CL=N(CL)
  130.                Else X=X1
  131.                End If 
  132.             End If 
  133.             If N(CL)=16 or N(CL)=10 or N(CL)=19
  134.                X1=X : Dec X
  135.                Gosub O
  136.                If H=0
  137.                   Inc X
  138.                   Gosub D : Dec X : CL=N(CL)
  139.                Else X=X1
  140.                End If 
  141.             End If 
  142.             '----------------------pezzo azzurro 
  143.             '-----------------------pezzo blu 1
  144.             If N(CL)=13
  145.                X1=X : Inc X
  146.                Gosub O
  147.                If H=0
  148.                   Dec X
  149.                   Gosub D : Inc X : CL=N(CL)
  150.                Else 
  151.                   Inc X
  152.                   Gosub O
  153.                   If H=0
  154.                      Dec X : Dec X : Gosub D : Inc X : Inc X
  155.                      CL=N(CL)
  156.                   Else X=X1-1
  157.                      Gosub O
  158.                      If H=0
  159.                         Inc X : Gosub D : Dec X : CL=N(CL)
  160.                      Else X=X1
  161.                      End If 
  162.                   End If 
  163.                End If 
  164.             End If 
  165.             '----------------------pezzo blu 2 
  166.             If N(CL)=4
  167.                X1=X : Dec X
  168.                Gosub O
  169.                If H=0
  170.                   Inc X
  171.                   Gosub D : Dec X : CL=N(CL)
  172.                Else 
  173.                   Dec X
  174.                   Gosub O
  175.                   If H=0
  176.                      Inc X : Inc X : Gosub D : Dec X : Dec X
  177.                      CL=N(CL)
  178.                   Else X=X1+1
  179.                      Gosub O
  180.                      If H=0
  181.                         Dec X : Gosub D : Inc X : CL=N(CL)
  182.                      Else X=X1
  183.                      End If 
  184.                   End If 
  185.                End If 
  186.             End If 
  187.          End If 
  188.          Gosub S
  189.          Wait 4
  190.       End If 
  191.       C=PF(X-2,Y+1)
  192.       If C=0 Then C=PF(X-2+X(CL,1),Y+1+Y(CL,1))
  193.       If C=0 Then C=PF(X-2+X(CL,2),Y+1+Y(CL,2))
  194.       If C=0 Then C=PF(X-2+X(CL,3),Y+1+Y(CL,3))
  195.       Inc CONTO
  196.       If CONTO>MAZ
  197.          CONTO=0
  198.          Gosub D
  199.          Inc Y
  200.          If L=21 and X>5 and Rnd(5)=1
  201.             Dec X
  202.             Gosub O
  203.             If H<>0
  204.                Inc X
  205.             End If 
  206.          End If 
  207.          If L=22 and X<14 and Rnd(5)=1
  208.             Inc X
  209.             Gosub O
  210.             If H<>0
  211.                Dec X
  212.             End If 
  213.          End If 
  214.          Gosub S
  215.       End If 
  216.    Until C<>0
  217.    If Y=1 Then CULO=1 : Return 
  218.    PF(X-2,Y)=CL
  219.    Gosub S
  220.    For T=1 To 3
  221.       PF(X-2+X(CL,T),Y+Y(CL,T))=CO(CL)
  222.    Next 
  223.    If V>Y Then V=Y
  224.    Add PUNTI,CO(CL)-1
  225.    For T=21 To 2 Step -1 : H=0
  226.       For G=1 To 14
  227.          If PF(G,T)<2 Then H=1
  228.       Next 
  229.       If H=0 Then Gosub RIGA
  230.    Next 
  231.    '
  232.    '
  233.    '
  234.    '
  235. Until LINE<=0
  236. '**********************  fine quadro ********************* 
  237. Mvolume 20
  238. Sam Play 8,3,13000
  239. For T=0 To 21
  240.    For G=1 To 14
  241.       FT=1 : FOTTO[G+2,T]
  242.    Next 
  243. Next 
  244. Clear Key 
  245. Paper 0
  246. Wait 100
  247. Cls 
  248. Inc GU : Restore GU+100
  249. If L<>26
  250. Load Iff "finepic"
  251. Paper 0
  252. Pen 31
  253. Locate 30,11 : Print L
  254. Pen 2
  255. Locate 12,22 : Read L,MAZ,LINE,MAZ$ : Print MAZ$
  256. KW
  257. Else Read L
  258. End If 
  259. Restore GU+100
  260. Return 
  261. End 
  262. '----------------------------------------------------------------- 
  263. '********************** FINE *************************** 
  264. RIGA:
  265. Sam Play 8,2,16000
  266. For G=1 To 3
  267.    Paper 31 : CL=7
  268.    For S=1 To 14 : FOTTO[S+2,T] : Next 
  269.    Paper 1 : CL=1
  270.    For S=1 To 14 : FOTTO[S+2,T] : Next 
  271. Next 
  272. PUNTI=PUNTI+30
  273. For S=T To V-2 Step -1
  274.    If S>0
  275.       For G=1 To 14
  276.          PF(G,S)=PF(G,S-1)
  277.          CL=PF(G,S)
  278.          FOTTO[G+2,S]
  279.       Next 
  280.    End If 
  281. Next 
  282. Inc T
  283. Inc V
  284. Dec LINE
  285. If L>8 and L<17 and MAZ>1 Then Dec MAZ
  286. If L>17 and L<21 and LINE<12 Then Dec MAZ
  287. If L=26 Then Dec MAZ
  288. If LINE>=0 Then Paper 12 : Pen 1 : Locate 11,26 : Print LINE;" "
  289. Return 
  290. RESTO:
  291. Ink 9
  292. Bar 24,0 To 135,176
  293. For S=1 To 21
  294.    For G=1 To 14
  295.       If PF(G,S)=0 Then CL=0 Else CL=PF(G,S)
  296.       FOTTO[G+2,S]
  297.    Next 
  298. Next 
  299. Return 
  300. NANO:
  301. For S=1 To 21
  302.    For G=1 To 14
  303.       PF(G,S)=0
  304.    Next 
  305. Next 
  306. Return 
  307. '
  308. '
  309. O:
  310. H=0
  311. For T=1 To 3
  312.    If X-2+X(N(CL),T)>=0 and X-2+X(N(CL),T)<16
  313.       If PF(X-2+X(N(CL),T),Y)>0
  314.          H=1
  315.       End If 
  316.    Else H=1
  317.    End If 
  318. Next 
  319. Return 
  320. '  
  321. '
  322. S:
  323. FOTTO[X,Y]
  324. For T=1 To 3 : X1=X+X(CL,T) : Y1=Y+Y(CL,T)
  325.    If Y+Y(CL,T)>=0 Then FOTTO[X1,Y1]
  326. Next 
  327. Return 
  328. D:
  329. Paper 9 : Locate X,Y : Print " "
  330. For T=1 To 3
  331.    If Y+Y(CL,T)>=0 Then Locate X+X(CL,T),Y+Y(CL,T) : Print " "
  332. Next 
  333. Return 
  334. Data 2,-1,0,1,0,1,-1,11
  335. Data 3,0,-1,1,-1,1,0,3
  336. Data 4,-1,0,1,0,2,0,12
  337. Data 5,-1,-1,-1,0,1,0,15
  338. Data 6,-1,0,0,-1,1,0,18
  339. Data 7,1,-1,1,0,0,1,21
  340. Data 8,0,-1,1,0,1,1,22
  341. Data 2,0,-1,0,1,1,1,2
  342. Data 2,1,0,-1,0,-1,1,9
  343. Data 2,-1,-1,0,-1,0,1,10
  344. Data 4,0,-1,0,1,0,2,13
  345. Data 4,-2,0,-1,0,1,0,14
  346. Data 4,0,-2,0,-1,0,1,4
  347. Data 5,0,-1,0,1,-1,1,16
  348. Data 5,-1,0,1,0,1,1,17
  349. Data 5,0,1,0,-1,1,-1,5
  350. Data 6,0,-1,0,1,-1,0,19
  351. Data 6,0,1,-1,0,1,0,20
  352. Data 6,0,-1,0,1,1,0,6
  353. Data 7,-1,0,0,1,1,1,7
  354. Data 8,1,0,0,1,-1,1,8
  355. 1 V=21
  356. 2 V=10 : Return 
  357. 3 PF(1,16)=5 : PF(14,16)=5 : PF(3,17)=4 : PF(12,17)=4 : PF(5,18)=3 : PF(10,18)=3
  358. PF(2,19)=7 : PF(13,19)=7 : V=15
  359. Return 
  360. 4 V=21 : Return 
  361. 5 For T=12 To 21 : PF(7,T)=4 : PF(8,T)=4 : Next : V=10
  362. Return 
  363. 6 For T=1 To 14 : PF(T,14)=1 : Next : V=10
  364. Return 
  365. 7 For T=17 To 21
  366.    For G=1 To 14 : A=Rnd(50)
  367.       If A<2 or A>9 Then A=0
  368.       PF(G,T)=A
  369.    Next 
  370. Next 
  371. V=16
  372. Return 
  373. 8 For T=7 To 21
  374.    For G=1 To 14 : A=Rnd(6)+2
  375.       PF(G,T)=A
  376.    Next 
  377. Next 
  378. V=6
  379. Return 
  380. 9 V=21 : Return 
  381. 10 For T=0 To 7
  382.    For G=0 To T
  383.       PF(G+1,T+14)=3
  384. Next : Next 
  385. V=13
  386. Return 
  387. 11 For T=0 To 7
  388.    For G=0 To T
  389.       PF(G+1,T+14)=2
  390.       PF(14-G,T+14)=2
  391. Next : Next 
  392. V=14
  393. Return 
  394. 12 For T=17 To 21
  395.    PF(1,T)=1 : PF(14,T)=1
  396. Next 
  397. V=16
  398. Return 
  399. 13 For T=10 To 21 : PF(7,T)=4 : PF(8,T)=4 : Next 
  400. V=9
  401. Return 
  402. 14 For T=17 To 21
  403.    For G=1 To 14 : A=Rnd(40)
  404.       If A<2 or A>9 Then A=0
  405.       PF(G,T)=A
  406.    Next 
  407. Next 
  408. V=16
  409. Return 
  410. 15 For T=1 To 14 : PF(T,19)=1 : Next 
  411. For T=1 To 14 : PF(T,18)=1 : Next 
  412. For T=1 To 14 : PF(T,17)=1 : Next 
  413. For T=1 To 3 : PF(T+2,21)=1 : PF(13-T,21)=1 : Next 
  414. For T=1 To 5 : PF(T+1,20)=1 : PF(14-T,20)=1 : Next 
  415. For T=1 To 3 : PF(T+2,15)=1 : PF(13-T,15)=1 : Next 
  416. For T=1 To 5 : PF(T+1,16)=1 : PF(14-T,16)=1 : Next 
  417. For T=12 To 20 : PF(7,T)=5 : PF(8,T)=5 : Next 
  418. PF(7,10)=2 : PF(8,10)=2 : PF(8,11)=2 : PF(7,11)=2
  419. V=14
  420. Return 
  421. 16 For T=1 To 14 : PF(T,12)=1 : Next : V=10
  422. Return 
  423. 17 PF(1,1)=2 : PF(2,1)=3 : PF(3,1)=4 : PF(4,1)=5 : PF(5,1)=6
  424. PF(14,1)=2 : PF(13,1)=3 : PF(12,1)=4 : PF(11,1)=5 : PF(10,1)=6
  425. V=3
  426. Return 
  427. 18 For T=1 To 2 : PF(1,T)=2 : PF(2,T)=3 : PF(3,T)=4 : PF(4,T)=5 : PF(5,T)=6
  428.    PF(14,T)=2 : PF(13,T)=3 : PF(12,T)=4 : PF(11,T)=5 : PF(10,T)=6
  429. Next 
  430. V=3
  431. Return 
  432. 19 PF(1,1)=2 : PF(2,2)=3 : PF(3,1)=4 : PF(4,2)=5 : PF(5,1)=6
  433. PF(14,2)=2 : PF(13,1)=3 : PF(12,2)=4 : PF(11,1)=5 : PF(10,2)=6
  434. V=3
  435. Return 
  436. 20 For T=1 To 3 : PF(1,T)=2 : PF(3,T)=3 : PF(5,T)=4
  437.    PF(14,T)=2 : PF(12,T)=4 : PF(10,T)=6
  438. Next 
  439. V=3
  440. Return 
  441. 21
  442. 22
  443. 23
  444. 24
  445. V=21 : Return 
  446. 25 V=21 : PF(7,15)=1 : Return 
  447. 26 V=21 : Return 
  448. LIVELLI:
  449. 101 Data 1,10,20,""
  450. 102 Data 2,6,12,"MELON"
  451. 103 Data 3,12,15,"LEMON"
  452. 104 Data 4,4,8,"NEMOL"
  453. 105 Data 5,8,20,"RAZOR"
  454. 106 Data 6,12,15,"POLKA"
  455. 107 Data 7,8,15,"GHOST"
  456. 108 Data 8,8,16,"CYBER"
  457. 109 Data 9,9,12,"CEBIT"
  458. 110 Data 10,10,12,"BLAZE"
  459. 111 Data 11,12,13,"OZONE"
  460. 112 Data 12,16,13,"COMAX"
  461. 113 Data 13,16,12,"REBEL"
  462. 114 Data 14,12,14,"ZAPPA"
  463. 115 Data 15,18,14,"COBRA"
  464. 116 Data 16,18,15,"CHAOS"
  465. 117 Data 17,10,25,"CREDO"
  466. 118 Data 18,14,20,"RELAY"
  467. 119 Data 19,14,22,"CRACK"
  468. 120 Data 20,14,20,"SONIK"
  469. 121 Data 21,8,5,"BYTES"
  470. 122 Data 22,8,5,"ABYSS"
  471. 123 Data 23,5,40,"FAITH"
  472. 124 Data 24,4,80,"ATARI"
  473. 125 Data 25,1,3,"AMIGA"
  474. 126 Data 26,100,99,"MADO'"
  475. 127 Data 27,0,0,"."
  476. FINE:
  477. Music 1
  478. Load Iff "CazTri:propriofinepic"
  479. KW
  480. Return 
  481. Procedure FOTTO[X,Y]
  482.    XX=X*8+1 : YY=Y*8+1
  483.    Ink CO(CL)
  484.    If FT=1 Then Ink 16
  485.    Bar XX,YY To XX+6,YY+6
  486.    FT=0
  487. End Proc
  488. Procedure CINPUT[NN$,N]
  489.    N$=""
  490.    Repeat 
  491.       A$=Inkey$
  492.       If(A$=Chr$(8)) and(Len(N$)>0) Then Print Chr$(8);" ";Chr$(8); : N$=Left$(N$,Len(N$)-1)
  493.       If(Instr(NN$,A$)>0) and(Len(N$)<N) Then Print Upper$(A$); : N$=N$+Upper$(A$)
  494.    Until(A$=Chr$(13))
  495. End Proc
  496. Procedure KW
  497.    Repeat 
  498.       A=Joy(1)
  499.       B$=Inkey$
  500.    Until(A=16) or(B$<>"")
  501. End Proc